import os
import sys

# 全局字典用于存储配置信息
_config_dict = None


def chatAiConfigInit(filename):
    """
    初始化配置文件并解析内容到全局字典中
    如果文件不存在则报错并退出程序

    Args:
        filename (str): 配置文件的路径

    Raises:
        SystemExit: 当文件不存在或无法读取时退出程序
    """
    global _config_dict

    # 检查文件是否存在
    if not os.path.exists(filename):
        print(f"错误：配置文件 '{filename}' 不存在！")
        sys.exit(1)

    _config_dict = {}

    try:
        with open(filename, 'r', encoding='utf-8') as f:
            for line_num, line in enumerate(f, 1):
                # 去除首尾空白字符
                line = line.strip()

                # 跳过空行和注释行
                if not line or line.startswith('#'):
                    continue

                # 分割键值对
                if '=' in line:
                    key, value = line.split('=', 1)
                    key = key.strip()
                    value = value.strip()

                    # 存储到字典中（后出现的值会覆盖先出现的）
                    _config_dict[key] = value
                else:
                    print(f"警告：第 {line_num} 行格式无效（缺少等号）")

    except Exception as e:
        print(f"读取配置文件时发生错误：{str(e)}")
        sys.exit(1)


def chatAiConfigGet(key):
    """
    从已初始化的配置字典中获取指定键的值

    Args:
        key (str): 要获取的配置键名

    Returns:
        str: 对应的配置值，如果键不存在则返回None

    Raises:
        RuntimeError: 如果配置尚未初始化
    """
    if _config_dict is None:
        raise RuntimeError("配置尚未初始化，请先调用 chatAiConfigInit()")

    return _config_dict.get(key)


'''
请注意你是我的编程助手，现在我需要你帮我生一个配置模块的代码，要求如下：
1、该模块有两个函数，chatAiConfigInit(filemame), chatAiConfigGet(key)
2、chatAiConfigInit(filemame)，功能主要是初始化配置文件的位置，如果没有这个文件就报错直接退出程序，该函数初始化完成后，会将数据存储在一个全局的
字典里面，文件里面的内容如下：key=value， 并且新的一行的#是注释的看是在解析文件的时候要被忽略掉。
3、chatAiConfigGet(key),该函数主要是获取上个函数初始化的字典里面的key的值；
4、请用Python 实现 并加上注释。
'''

# 示例用法
if __name__ == "__main__":
    # 初始化配置（示例文件路径）
    chatAiConfigInit("chatAi.ini")

    # 获取配置值
    model_name = chatAiConfigGet("log_file")
    api_key = chatAiConfigGet("log_db")

    print(f"日志文件：{model_name}")
    print(f"数据库文件：{api_key}")